package com.bsy.network.adapter

import com.google.gson.TypeAdapter
import com.google.gson.stream.JsonReader
import com.google.gson.stream.JsonToken
import com.google.gson.stream.JsonWriter

class BooleanDefaultAdapter : TypeAdapter<Boolean>() {

    override fun write(writer: JsonWriter?, value: Boolean?) {
        if (value == null) {
            writer?.nullValue()
            return
        }
        writer?.value(value)
    }

    override fun read(reader: JsonReader?): Boolean {
        return when (reader!!.peek()) {
            JsonToken.BOOLEAN -> reader.nextBoolean()
            JsonToken.STRING ->
                // 如果后台返回 "true" 或者 "TRUE"，则处理为 true，否则为 false
                java.lang.Boolean.parseBoolean(reader.nextString())
            JsonToken.NUMBER ->
                // 如果后台返回的是非 0 的数值则处理为 true，否则为 false
                reader.nextInt() != 0
            JsonToken.NULL -> {
               reader.nextNull()
                false
            }
            else -> {
                reader.skipValue()
                false
            }
        }
    }

}